home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
parcs
/
parcs.lha
/
sample
/
parser-append.parcs
< prev
next >
Wrap
Text File
|
1992-06-08
|
956b
|
39 lines
app([],X,X).
app([A|X],Y,[A|Z]) :- app(X,Y,Z).
parse(Sentence,Ptree) :- s(Sentence,Ptree).
s([A|X],s(NP,VP)) :- app([B|Y],[C|Z],[A|X]),np([B|Y],NP),vp([C|Z],VP).
vp([A|X],vp(V)) :- v([A|X],V).
vp([A|X],vp(V,NP)) :- app([B|Y],[C|Z],[A|X]),v([B|Y],V),np([C|Z],NP).
vp([A|X],vp(VP,PP)) :- app([B|Y],[C|Z],[A|X]),vp([B|Y],VP),pp([C|Z],PP).
np([he],np(he)).
np([this],np(this)).
np([ken],np(ken)).
np([A|X],np(N)) :- n([A|X],N).
np([A|X],np(D,NP)) :- app([B|Y],[C|Z],[A|X]),d([B|Y],D),np([C|Z],NP).
np([A|X],np(Adj,NP)) :- app([B|Y],[C|Z],[A|X]),a([B|Y],Adj),np([C|Z],NP).
np([A|X],np(NP,PP)) :- app([B|Y],[C|Z],[A|X]),np([B|Y],NP),pp([C|Z],PP).
pp([A|X],pp(P,NP)) :- app([B|Y],[C|Z],[A|X]),p([B|Y],P),np([C|Z],NP).
n([pen],n(pen)).
n([man],n(man)).
n([baseball],n(baseball)).
n([park],n(park)).
v([is],v(is)).
v([has],v(has)).
v([play],v(play)).
a([black],a(black)).
a([this],a(this)).
p([with],p(with)).
p([in],p(in)).
d([a],d(a)).
d([the],d(the)).